const { sequelize } = require('../models');
const bcrypt = require('bcryptjs');

async function initDatabase() {
  try {
    console.log('开始初始化数据库...');
    
    // 测试数据库连接
    await sequelize.authenticate();
    console.log('数据库连接成功');
    
    // 同步所有模型到数据库（创建表）
    await sequelize.sync({ force: false });
    console.log('数据库表创建成功');
    
    // 检查是否已有管理员用户
    const { User } = require('../models');
    const adminUser = await User.findOne({ where: { role: 'admin' } });
    
    if (!adminUser) {
      // 创建默认管理员账户
      const hashedPassword = await bcrypt.hash('admin123', 10);
      await User.create({
        username: 'admin',
        email: 'admin@study.com',
        password: hashedPassword,
        real_name: '系统管理员',
        role: 'admin',
        status: 'active'
      });
      console.log('默认管理员账户创建成功');
      console.log('用户名: admin');
      console.log('密码: admin123');
      console.log('请登录后立即修改默认密码！');
    } else {
      console.log('管理员账户已存在');
    }
    
    console.log('数据库初始化完成！');
    process.exit(0);
    
  } catch (error) {
    console.error('数据库初始化失败:', error);
    process.exit(1);
  }
}

initDatabase(); 